
 public class ListNode {
      int val;
      ListNode next;
      ListNode() {}
    ListNode(int val) { this.val = val; }
      ListNode(int val, ListNode next) { this.val = val; this.next = next; }
  }


class Solution {
    public static ListNode deleteDuplicates(ListNode head) {
        if(head==null||head.next==null) {
            return head;
        }
        ListNode prev=null;
        ListNode cur=head;
        ListNode curNext=cur.next;
        while(curNext!=null) {
            //当他们的值不同时，集体后移，注意顺序
            if(cur.val!=curNext.val) {
                prev=cur;
                cur=curNext;
                curNext=curNext.next;
            } else {
                //当他们的值相同时
                while(cur.val==curNext.val) {
                    curNext=curNext.next;
                }
                prev.next=curNext;
                cur=curNext;
                curNext=curNext.next;
            }
        }
        return head;
    }
public  static ListNode head;
    public static void main(String[] args) {
        ListNode listNode=new ListNode(1);
        ListNode listNode1=new ListNode(2);
        ListNode listNode2=new ListNode(3);
        ListNode listNode3=new ListNode(3);
        ListNode listNode4=new ListNode(4);
        ListNode listNode5=new ListNode(4);
        ListNode listNode6=new ListNode(5);
        head=listNode;
        head.next=listNode1;
        listNode1.next=listNode2;
        listNode2.next=listNode3;
        listNode3.next=listNode4;
        listNode4.next=listNode5;
        listNode5.next=listNode6;
        deleteDuplicates(head);
    }
}